expander: Use a builtin icon
authorMatthias Clasen <mclasen@redhat.com>
Sat, 19 Dec 2015 05:48:10 +0000 (00:48 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 19 Dec 2015 16:24:27 +0000 (11:24 -0500)
This saves quite a bit of code.

gtk/gtkexpander.c

index 9892423649733c2d0ce96b4b7bb75770ec274205..4b02ee82395b90d53fcb7790d5840518de32a811 100644 (file)
 #include "a11y/gtkexpanderaccessible.h"
 #include "gtkstylecontextprivate.h"
 #include "gtkcsscustomgadgetprivate.h"
-#include "gtkcssnumbervalueprivate.h"
-#include "gtkcssstyleprivate.h"
+#include "gtkbuiltiniconprivate.h"
 #include "gtkwidgetprivate.h"
 #include "gtkcontainerprivate.h"
 
@@ -287,22 +286,6 @@ static gboolean gtk_expander_render_title   (GtkCssGadget        *gadget,
                                              int                  width,
                                              int                  height,
                                              gpointer             data);
-static void     gtk_expander_measure_arrow  (GtkCssGadget        *gadget,
-                                             GtkOrientation       orientation,
-                                             int                  for_size,
-                                             int                 *minimum_size,
-                                             int                 *natural_size,
-                                             int                 *minimum_baseline,
-                                             int                 *natural_baseline,
-                                             gpointer             data);
-static gboolean gtk_expander_render_arrow   (GtkCssGadget        *gadget,
-                                             cairo_t             *cr,
-                                             int                  x,
-                                             int                  y,
-                                             int                  width,
-                                             int                  height,
-                                             gpointer             data);
-
 
 G_DEFINE_TYPE_WITH_CODE (GtkExpander, gtk_expander, GTK_TYPE_BIN,
                          G_ADD_PRIVATE (GtkExpander)
@@ -508,15 +491,12 @@ gtk_expander_init (GtkExpander *expander)
                                                   gtk_expander_render_title,
                                                   NULL,
                                                   NULL);
-  priv->arrow_gadget = gtk_css_custom_gadget_new ("arrow",
-                                                  GTK_WIDGET (expander),
-                                                  priv->title_gadget,
-                                                  NULL,
-                                                  gtk_expander_measure_arrow,
-                                                  NULL,
-                                                  gtk_expander_render_arrow,
-                                                  NULL,
-                                                  NULL);
+  priv->arrow_gadget = gtk_builtin_icon_new ("arrow",
+                                             GTK_WIDGET (expander),
+                                             priv->title_gadget,
+                                             NULL);
+  gtk_css_gadget_add_class (priv->arrow_gadget, GTK_STYLE_CLASS_HORIZONTAL);
+  gtk_builtin_icon_set_default_size_property (GTK_BUILTIN_ICON (priv->arrow_gadget), "expander-size");
 
   gtk_drag_dest_set (GTK_WIDGET (expander), 0, NULL, 0, 0);
   gtk_drag_dest_set_track_motion (GTK_WIDGET (expander), TRUE);
@@ -894,28 +874,6 @@ gtk_expander_unmap (GtkWidget *widget)
     gtk_widget_unmap (priv->label_widget);
 }
 
-static gboolean
-gtk_expander_render_arrow (GtkCssGadget *gadget,
-                           cairo_t      *cr,
-                           int           x,
-                           int           y,
-                           int           width,
-                           int           height,
-                           gpointer      data)
-{
-  GtkWidget *widget = gtk_css_gadget_get_owner (gadget);
-  GtkExpander *expander = GTK_EXPANDER (widget);
-  GtkExpanderPrivate *priv = expander->priv;
-  GtkStyleContext *context;
-
-  context = gtk_widget_get_style_context (widget);
-  gtk_style_context_save_to_node (context, gtk_css_gadget_get_node (priv->arrow_gadget));
-  gtk_render_expander (context, cr, x, y, width, height);
-  gtk_style_context_restore (context);
-
-  return FALSE;
-}
-
 static gboolean
 gtk_expander_render_title (GtkCssGadget *gadget,
                            cairo_t      *cr,
@@ -1569,43 +1527,6 @@ gtk_expander_measure_title (GtkCssGadget   *gadget,
     }
 }
 
-static void
-gtk_expander_measure_arrow (GtkCssGadget   *gadget,
-                            GtkOrientation  orientation,
-                            int             for_size,
-                            int            *minimum,
-                            int            *natural,
-                            int            *minimum_baseline,
-                            int            *natural_baseline,
-                            gpointer        data)
-{
-  GtkWidget *widget = gtk_css_gadget_get_owner (gadget);
-  GtkCssStyle *style;
-  guint property;
-  gdouble min_size;
-
-  style = gtk_css_gadget_get_style (gadget);
-  if (orientation == GTK_ORIENTATION_HORIZONTAL)
-    property = GTK_CSS_PROPERTY_MIN_WIDTH;
-  else
-    property = GTK_CSS_PROPERTY_MIN_HEIGHT;
-
-  min_size = _gtk_css_number_value_get (gtk_css_style_get_value (style, property), 100.0);
-
-  if (min_size > 0.0)
-    *minimum = *natural = 0;
-  else
-    {
-      gint expander_size;
-
-      gtk_widget_style_get (GTK_WIDGET (widget),
-                            "expander-size", &expander_size,
-                            NULL);
-
-      *minimum = *natural = expander_size;
-    }
-}
-
 /**
  * gtk_expander_new:
  * @label: the text of the label